/**
 * @file envFactory.h
 *
 * @brief Interfaccia per la configurazione dei comandi e dell'ambiente applicativo.
 *
 * @date Feb 27, 2012
 * @author: Francesco Corvino
 */

#ifndef CFACTORY_H_
#define CFACTORY_H_

#include "applicationLib.h"
#include "invoker.h"
#include "inputHandler.h"
#include "../RscHost/factoryComm.h"

#include "cbase/ctesting.h"
#include "cbase/cutility.h"

/**
 * @brief Struttura che permette di definire in maniera più semplice un comando.
 */
typedef struct SimpleDescCommand_ {
	char *namecmd;
	char *helpstr;
	void (*execfnc)(void);
} SimpleDescCommand;

/**
 *
 */
typedef struct EnvFactory_ {
	Invoker invokeconfig;
	InputHandler inputconfig;
	FactoryComm commconfig;
} EnvFactory;

int envFact_registerCMD(InterfaceCommand * cmd);

//////////////////////////////////////////////////////////////////////////////////
////// funzioni per impostare i comandi di base e l'ambiente esecutivo ///////////
//////////////////////////////////////////////////////////////////////////////////

EnvFactory * envFact_setConfigurationBase();

void envFact_init(EnvFactory * config);

void envFact_start();

#endif /* CFACTORY_H_ */
